package com.jxb.test20241216;

import java.util.Arrays;

/**
 * 输入: [0,1,0,3,12]
 * 输出: [1,3,12,0,0]
 */
public class MoveZeroes_283 {

    public static void main(String[] args) {
        //[0,1,0,3,12]
        int[] nums = {0,1,0,3,12};
        removeZero(nums);
        System.out.println(Arrays.toString(nums));
    }

    //时间复杂度：O(n)，空间复杂度为O(1)
    public static void removeZero(int[] nums) {
        //这种方式不行，{0,1,0,3,12}这种不成立
//        int j = nums.length - 1;
//        for (int i = 0;i<nums.length;i++) {
//            if (i == j) {
//                break;
//            }
//            if (nums[i] == 0) {
//                nums[i] = nums[j];
//                nums[j--] = 0;
//            }
//        }
        //进行遍历，替换0的元素，记录最后一个不为0的位置
        int j = nums.length - 1;
        for (int i = 0;i<nums.length;i++) {
            if (nums[i] == 0) {
                nums[i] = nums[j--];
            }
        }
        //进行遍历，将j后面的元素置为0
        for (int i = j+1; i<nums.length;i++) {
            nums[i] = 0;
        }
    }



}
